package com.zxx.casserver.modules.org.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zxx.casserver.modules.org.entity.OrgDO;
import com.zxx.casserver.modules.org.entity.OrgVO;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 组织机构表 服务类
 * </p>
 *
 * @author zhoukai
 * @since 2022-07-14
 */
public interface IOrgService extends IService<OrgDO> {

    /**
     * 根据平台组织名称模糊查询组织ID
     *
     * @param orgName 组织名称
     * @return 返回组织ID
     */
    Set<Long> getOrgIdByName(String orgName);

    /**
     * 根据传入的条件，查询组织信息
     *
     * @param orgVO 组织对象
     * @return 返回分页查询值
     */
    IPage<OrgDO> listOrg(OrgVO orgVO);

    /**
     * 根据传入的分页参数，返回处理的值
     *
     * @param orgBO
     * @return 返回处理之后的值
     */
    IPage<OrgVO> dispose(IPage<OrgDO> orgBO);

    /**
     * 保存用户组织
     *
     * @param orgVO 组织信息
     * @return 返回保存成功的对象
     */
    OrgDO saveOrg(OrgVO orgVO);

    /**
     * 更新用户组织信息
     *
     * @param orgVO 组织信息
     * @return 返回更新之后的组织
     */
    OrgDO updateOrg(OrgVO orgVO);

    /**
     * 删除组织，如果组织没有被关联的时候，才可以删除组织
     *
     * @param orgVO 组织信息
     * @return 返回成功或者失败
     */
    Boolean deleteOrg(OrgVO orgVO);

    /**
     * 返回组织树列表
     *
     * @param orgVO 组织查询信息
     * @return 返回查询结果
     */
    List<OrgDO> getOrgTree(OrgVO orgVO);
}
